#include "BulletCollision/CollisionDispatch/btSimulationIslandManager.h"
#ifdef __cplusplus
extern "C" {
#endif
btSimulationIslandManager* bullet_NewbtSimulationIslandManager(){
	btSimulationIslandManager* wrap_out = new btSimulationIslandManager();
	return wrap_out;
}

void bullet_btSimulationIslandManager_buildAndProcessIslands(btSimulationIslandManager* c_this,btDispatcher* dispatcher,btCollisionWorld* collisionWorld,btSimulationIslandManager::IslandCallback* callback){
	btDispatcher * c_arg_dispatcher=(btDispatcher *)(void*)(dispatcher);
	btCollisionWorld * c_arg_collisionWorld=(btCollisionWorld *)(void*)(collisionWorld);
	btSimulationIslandManager::IslandCallback * c_arg_callback=(btSimulationIslandManager::IslandCallback *)(void*)(callback);
	c_this->buildAndProcessIslands(c_arg_dispatcher,c_arg_collisionWorld,c_arg_callback);
}

void bullet_btSimulationIslandManager_findUnions(btSimulationIslandManager* c_this,btDispatcher* dispatcher,btCollisionWorld* colWorld){
	btDispatcher * c_arg_dispatcher=(btDispatcher *)(void*)(dispatcher);
	btCollisionWorld * c_arg_colWorld=(btCollisionWorld *)(void*)(colWorld);
	c_this->findUnions(c_arg_dispatcher,c_arg_colWorld);
}

bool bullet_btSimulationIslandManager_getSplitIslands(btSimulationIslandManager* c_this){
	bool c_out = c_this->getSplitIslands();
	bool wrap_out = (c_out);
	return wrap_out;
}

btUnionFind* bullet_btSimulationIslandManager_getUnionFind(btSimulationIslandManager* c_this){
	btUnionFind& c_out = c_this->getUnionFind();
	btUnionFind* wrap_out = (btUnionFind*)(&c_out);
	return wrap_out;
}

void bullet_btSimulationIslandManager_initUnionFind(btSimulationIslandManager* c_this,int n){
	int c_arg_n=n;
	c_this->initUnionFind(c_arg_n);
}

void bullet_btSimulationIslandManager_processIslands(btSimulationIslandManager* c_this,btDispatcher* dispatcher,btCollisionWorld* collisionWorld,btSimulationIslandManager::IslandCallback* callback){
	btDispatcher * c_arg_dispatcher=(btDispatcher *)(void*)(dispatcher);
	btCollisionWorld * c_arg_collisionWorld=(btCollisionWorld *)(void*)(collisionWorld);
	btSimulationIslandManager::IslandCallback * c_arg_callback=(btSimulationIslandManager::IslandCallback *)(void*)(callback);
	c_this->processIslands(c_arg_dispatcher,c_arg_collisionWorld,c_arg_callback);
}

void bullet_btSimulationIslandManager_setSplitIslands(btSimulationIslandManager* c_this,bool doSplitIslands){
	bool c_arg_doSplitIslands=doSplitIslands;
	c_this->setSplitIslands(c_arg_doSplitIslands);
}

#ifdef __cplusplus
}
#endif
